/*
 * ComandoGolpearBola.java
 *
 * Created on 16 de julio de 2006, 2:39
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.tacticas;

import futbol.*;

/**
 *
 * @author Administrador
 */
public class ComandoGolpearBola extends Comando{
    
    private double x,y;
    
    public ComandoGolpearBola(int j, double x, double y) {
        this.x=x;
        this.y=y;
        super.setJugador(General.control(j,0,10));
    }
    
    private boolean puedeGolpearBola(Partido p){
        int equ=super.getEquipo();
        Jugador j=p.getEquipo(equ).getJugador(super.getJugador());
        Bola b=p.getBola();
        return General.getDistancia(j.getX(),j.getY(),b.getX(),b.getY())<10;
    }
    
    public void golpearBola(Partido p, double xAbs, double yAbs, int nGrado){
        if (puedeGolpearBola(p)){
            int equ=super.getEquipo();
            double fuerza=p.getEquipo(equ).getJugador(super.getJugador()).getFuerza();
            p.getBola().golpearBola(equ, super.getJugador(), xAbs, yAbs, (int)(fuerza*nGrado/100));
        }
    }
    
    public void ejecutar(Partido p){
        int equ=super.getEquipo();
        Equipo e=p.getEquipo(equ);
        Jugador j1=e.getJugador(super.getJugador());
        double x1=j1.getX(), y1=j1.getY();
        int f=p.getFactor(equ);
        int nGrado=100;
        double nDis=General.getDistancia(x1*f,y1*f,x,y);
        if (nDis<50) nGrado=(int)(nDis*2);
        golpearBola(p, x*f, y*f, nGrado);
    }
}
